Fallback from stock ids to icon names like the old GtkAction code did
authorMatthias Clasen <matthiasc@src.gnome.org>
Sat, 24 Jan 2009 22:00:07 +0000 (22:00 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 24 Jan 2009 22:00:07 +0000 (22:00 +0000)
svn path=/trunk/; revision=22210

ChangeLog
gtk/gtktoolbutton.c

index c8e1f3823eb0df9afe41b22e089e690e73292c14..6851b569118ab97a91ed85530a38a1cb2f33f50a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-24  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtktoolbutton.c (gtk_tool_button_activatable_reset):
+       Fall back from stock ids to icon names like the old code 
+       did. Patch by Tristan van Berkom.
+
 2009-01-24  Matthias Clasen  <mclasen@redhat.com>
 
        * tests/testactions.c: Add a testcase for toolitems using
index be2bf5af487354c4235f2e2a9cec1d0a30266a18..6c00662b45c2fcda7615a0f652a3db28a8203d2d 100644 (file)
@@ -772,6 +772,7 @@ gtk_tool_button_activatable_update (GtkActivatable       *activatable,
          gtk_tool_button_set_label (button, NULL);
          gtk_tool_button_set_icon_name (button, NULL);
        }
+      gtk_tool_button_set_icon_widget (button, NULL);
       gtk_tool_button_set_stock_id (button, gtk_action_get_stock_id (action));
     }
   else if (strcmp (property_name, "gicon") == 0)
@@ -812,6 +813,7 @@ gtk_tool_button_activatable_reset (GtkActivatable       *activatable,
 {
   GtkToolButton *button;
   GIcon         *icon;
+  const gchar   *stock_id;
 
   parent_activatable_iface->reset (activatable, action);
 
@@ -822,14 +824,15 @@ gtk_tool_button_activatable_reset (GtkActivatable       *activatable,
     return;
 
   button = GTK_TOOL_BUTTON (activatable);
-  
-  gtk_tool_button_set_label (button, NULL);
-  gtk_tool_button_set_stock_id (button, NULL);
-  gtk_tool_button_set_icon_name (button, NULL);
+  stock_id = gtk_action_get_stock_id (action);
+
+  gtk_tool_button_set_label (button, gtk_action_get_short_label (action));
   gtk_tool_button_set_use_underline (button, TRUE);
-  
-  if (gtk_action_get_stock_id (action))
-    gtk_tool_button_set_stock_id (button, gtk_action_get_stock_id (action));
+  gtk_tool_button_set_stock_id (button, stock_id);
+  gtk_tool_button_set_icon_name (button, gtk_action_get_icon_name (action));
+
+  if (stock_id && gtk_icon_factory_lookup_default (stock_id))
+      gtk_tool_button_set_icon_widget (button, NULL);
   else if ((icon = gtk_action_get_gicon (action)) != NULL)
     {
       GtkIconSize icon_size = gtk_tool_item_get_icon_size (GTK_TOOL_ITEM (button));